1 Exemple guiat 1.1

1.1 Mètodes d’agregació k-means amb dades autogenerades


En aquest exemple generarem un conjunt de mostres aleatòries per a posteriorment fer servir l’algoritme k-means per agrupar-les. Es crearan les mostres al voltant de dos punts concrets. Així doncs, lo lògic serà agrupar en dos clústers. Donat que inicialment, en un problema real, no es coneix quin es el número idoni de clústers k, provarem primer amb dos (el valor òptim) i posteriorment amb 4 i 8 clústers. Per a avaluar la qualitat de cada procés d’agrupació farem servir la silueta mitjana. La silueta de cada mostra avalua com de bé o malament està classificada cada mostra en el clúster al que ha estat assignada. Per això es fa servir una fórmula que té en compte la distància a les mostres del seu clúster i la distància a les mostres del clúster veí més proper.

A l’hora de provar el codi que es mostra, és important tenir en compte que les mostres es generen de forma aleatòria i també que l’algoritme k-means té una inicialització aleatòria. Així doncs, en cada execució, s’obtindran uns resultats lleugerament diferents.

Lo primer que fem es carregar la llibreria clúster que conté les funcions que es necessiten

if (!require('cluster')) install.packages('cluster')
library(cluster)

Generem les mostres de forma aleatòria prenent com a centre els punts [0,0] i [5,5].

n <- 150 # número de mostres
p <- 2   # dimensions

sigma <- 1 # Variància de la distribució
mean1 <- 0 # centre del primer grup
mean2 <- 5 # centre del segon grup

n1 <- round(n/2) # número de mostres del primer grup
n2 <- round(n/2) # número de mostres del segon grup

x1 <- matrix(rnorm(n1*p,mean=mean1,sd=sigma),n1,p)
x2 <- matrix(rnorm(n2*p,mean=mean2,sd=sigma),n2,p)

Ajuntem totes les mostres generades i les mostrem en una gràfica

x  <- rbind(x1,x2)
plot (x, xlab="Grup 1", ylab="Grup 2")

Com es pot comprovar les mostres estan clarament separades en dos grups. Si es vol complicar el problema es pot modificar els punts centrals (mean1 i mean2) fent que estiguin més propers i/o ampliar la Variància (sigma) per a que les mostres estiguin més disperses.

A continuació aplicarem l’algoritme k-means amb 2, 4 i 8 clústers

fit2       <- kmeans(x, 2)
y_cluster2 <- fit2$cluster

fit4       <- kmeans(x, 4)
y_cluster4 <- fit4$cluster

fit8       <- kmeans(x, 8)
y_cluster8 <- fit8$cluster

Les variables y_cluster2, y_cluster4 i y_cluster8 contenen per a cada mostra l’identificador del clúster a les que han estat assignades. Per exemple, en el cas dels k=2 les mostres s’han assignat al clúster 1 o al 2.

y_cluster2
##   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [75] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [112] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [149] 2 2

Per a visualitzar els clústers podem fer servir la funció clusplot. Mirem l’agrupació amb 2 clústers i observem pràcticament no hi ha valors extrems i realment els dos clústers generats són homogenis.

clusplot(x, fit2$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)

amb 4 observem com el clúster de l’esquerra l’ha dividit en tres.

clusplot(x, fit4$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)

i amb 8. L’algoritme fa cas al que se li demana i ens genera 8 clústers tot i que visualment ja es veu que el resultat no és massa consistent.

clusplot(x, fit8$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)

També podem visualitzar el resultat del procés d’agrupament amb el següent codi per al cas de 2 clústers. L’ús de colors facilita la identificació visual de clústers.

plot(x[y_cluster2==1,],col='blue', xlim=c(min(x[,1]), max(x[,1])), ylim=c(min(x[,2]), max(x[,2])), xlab = "Dimensió 1", ylab = "Dimensió 2")
points(x[y_cluster2==2,],col='red')

per a 4

plot(x[y_cluster4==1,],col='blue', xlim=c(min(x[,1]), max(x[,1])), ylim=c(min(x[,2]), max(x[,2])), xlab = "Dimensió 1", ylab = "Dimensió 2")
points(x[y_cluster4==2,],col='red')
points(x[y_cluster4==3,],col='green')
points(x[y_cluster4==4,],col='black')

i per a 8

plot(x[y_cluster8==1,],col='blue', xlim=c(min(x[,1]), max(x[,1])), ylim=c(min(x[,2]), max(x[,2])), xlab = "Dimensió 1", ylab = "Dimensió 2")
points(x[y_cluster8==2,],col='red')
points(x[y_cluster8==3,],col='green')
points(x[y_cluster8==4,],col='black')
points(x[y_cluster8==5,],col='yellow')
points(x[y_cluster8==6,],col='purple')
points(x[y_cluster8==7,],col='cyan')
points(x[y_cluster8==8,],col='orange')

Ara avaluarem la qualitat de l’agregació. Per això farem servir la funció silhouette que calcula la silueta de cada mostra

d  <- daisy(x) 
sk2 <- silhouette(y_cluster2, d)
sk4 <- silhouette(y_cluster4, d)
sk8 <- silhouette(y_cluster8, d)

La funció silhouette retorna per a cada mostra, el clúster on ha estat assignat, el clúster veí i el valor de la silueta. Així doncs, calculant la mitjana de la tercera columna podem obtenir una estimació de la qualitat de l’agrupament.

mean(sk2[,3])
## [1] 0.744045
mean(sk4[,3])
## [1] 0.3551085
mean(sk8[,3])
## [1] 0.3207444

Com es pot comprovar, agrupar en dos clústers es millor que en 4 o en 8, lo qual es lògic tenint en compte com s’han generat les dades.

Una bona pràctica alhora d’entendre millor el joc de dades, consisteix en posar nom a cadascun dels clústers identificats. Ho veurem més clarament en el següent exemple que parteix de dades reals.


2 Exemple guiat 1.2

2.1 Mètodes d’agregació k-means amb dades reals


A continuació estudiarem un altre exemple de com es fan servir els models d’agregació. Per a això farem servir el joc de dades penguins contingut en el paquet R palmerpenguins. Aquest joc de dades es troba descrit a https://cran.r-project.org/web/packages/palmerpenguins/index.html i conté medicions de grandària, observacions de postes i proporcions d’isòtops sanguinis de tres espècies de pingüins observades en tres illes de l’arxipèlag Palmer, a l’Antàrtida, durant un període d’estudi de tres anys.

Aquest dataset està prèviament treballat perquè les dades estiguin netes i sense errors. Si no és així abans de res hauríem de buscar errors, valors nuls o outliers. Hauríem tractar de discretitzar o eliminar columnes. Fins i tot realitzar aquest últim pas diverses vegades per comprovar els diferents resultats i triar el que millor rendiment ens doni. De totes maneres conté algun valor nul que procedirem a ignorar.

Procedim a visualitzar l’estructura i resum del joc de dades.

if (!require('palmerpenguins')) install.packages('palmerpenguins')
library(palmerpenguins)
# palmerpenguins::penguins
summary(penguins)
##       species          island    bill_length_mm  bill_depth_mm  
##  Adelie   :152   Biscoe   :168   Min.   :32.10   Min.   :13.10  
##  Chinstrap: 68   Dream    :124   1st Qu.:39.23   1st Qu.:15.60  
##  Gentoo   :124   Torgersen: 52   Median :44.45   Median :17.30  
##                                  Mean   :43.92   Mean   :17.15  
##                                  3rd Qu.:48.50   3rd Qu.:18.70  
##                                  Max.   :59.60   Max.   :21.50  
##                                  NA's   :2       NA's   :2      
##  flipper_length_mm  body_mass_g       sex           year     
##  Min.   :172.0     Min.   :2700   female:165   Min.   :2007  
##  1st Qu.:190.0     1st Qu.:3550   male  :168   1st Qu.:2007  
##  Median :197.0     Median :4050   NA's  : 11   Median :2008  
##  Mean   :200.9     Mean   :4202                Mean   :2008  
##  3rd Qu.:213.0     3rd Qu.:4750                3rd Qu.:2009  
##  Max.   :231.0     Max.   :6300                Max.   :2009  
##  NA's   :2         NA's   :2

Com es pot comprovar, aquesta base de dades està pensada per a problemes de classificació supervisada que pretén classificar cada tipus de pingüí en una de les tres classes o espècies existents (Adelie, Gentoo o Chinstrap). Com en aquest exemple farem servir un mètode no supervisat, transformarem el problema supervisat original en un no supervisat . Per aconseguir-ho no farem servir la columna species, que és la variable que es vol predir. Per tant, intentarem trobar agrupacions usant únicament els quatre atributs numèrics que caracteritzen cada espècie de pingüí.

Carreguem les dades i ens quedem únicament amb les quatre columnes que defineixen a cada espècie.

x <- na.omit(penguins[,3:6])

En aquest cas hem plantejat un exemple més realista i per tant inicialment no coneixem el número òptim de clústers. Comencem provant amb varis valors.

d <- daisy(x) 
resultados <- rep(0, 10)
for (i in c(2,3,4,5,6,7,8,9,10))
{
  fit           <- kmeans(x, i)
  y_cluster     <- fit$cluster
  sk            <- silhouette(y_cluster, d)
  resultados[i] <- mean(sk[,3])
}

Mostrem en una gràfica els valors de la silueta mitja de cada prova per comprovar quin número de clusters és el millor.

plot(2:10,resultados[2:10],type="o",col="blue",pch=0,xlab="Número de clusters",ylab="Silueta")

Tot i que un esperaria obtenir un valor òptim per a k = 3, sembla que del gràfic es desprèn que es millor k = 4 o fins i tot k = 5.

Un altre forma d’avaluar quin és el millor nombre de clústers és considerar el millor model, aquell que ofereix la menor suma dels quadrats de les distàncies dels punts de cada grup respecte al seu centre (withinss), amb la major separació entre centres de grups (betweenss). Com es pot comprovar és una idea conceptualment similar a la silueta. Una manera comuna de fer la selecció del nombre de clústers consisteix a aplicar el mètode elbow (colze), que no és més que la selecció del nombre de clústers d’acord amb la inspecció de la gràfica que s’obté al iterar amb el mateix conjunt de dades per a diferents valors de nombre de clústers. S’ha de seleccionar el valor que es troba en el “colze” de la corba.

resultados <- rep(0, 10)
for (i in c(2,3,4,5,6,7,8,9,10))
{
  fit           <- kmeans(x, i)
  resultados[i] <- fit$tot.withinss
}
plot(2:10,resultados[2:10],type="o",col="blue",pch=0,xlab="Nombre de clústers",ylab="tot.tot.withinss")

En aquest cas el número òptim de clústers es 4, que és quan la corba comença a estabilitzar-se.

També es pot fer servir la funció kmeansruns del paquet fpc que executarà l’algoritme kmeans com un conjunt de valors i seleccionarà el valor del número de clústers que millor funcioni d’acord amb dos criteris: la silueta mitja (asw) i Calinski-Harabasz (“ch”).

if (!require('fpc')) install.packages('fpc'); library('fpc')
fit_ch  <- kmeansruns(x, krange = 1:10, criterion = "ch") 
fit_asw <- kmeansruns(x, krange = 1:10, criterion = "asw") 

Podem comprovar el valor amb el que s’ha obtingut el millor resultat i també mostrar el resultat obtingut per a tots els valors de k fent servir tots dos criteris.

fit_ch$bestk
## [1] 10
fit_asw$bestk
## [1] 2
plot(1:10,fit_ch$crit,type="o",col="blue",pch=0,xlab="Número de clústers",ylab="Criteri Calinski-Harabasz")

plot(1:10,fit_asw$crit,type="o",col="blue",pch=0,xlab="Número de clústers",ylab="Criteri silueta mitja")

Els resultats son molt semblants als que hem obtingut anteriorment. Amb el criteri de la silueta mitja s’obtenen dos clústers i amb el Calinski-Harabasz s’obtenen 3.

Com s’ha comprovat, conèixer el número òptim de clústers no és un problema fàcil. Tampoc ho és la visualització dels models d’agregació.

Com en el cas que estudiem sabem que les dades poden ser agrupades en 3 classes, vegem com es comporta el kmeans en aquest cas. Per això comparem visualment els camps dos a dos, amb el valor real que sabem està emmagatzemat en el camp class del dataset original.

(Aclarim que òbviament no acostuma a passar que coneguem de forma prèvia el nombre de clústers òptim. Aquest exemple el plantegem amb finalitats didàctiques i amb voluntat d’experimentar)

penguins3clusters <- kmeans(x, 3)

# bill_lLength y bill_depth
plot(x[c(1,2)], col=penguins3clusters$cluster, main="Classificació k-means")

plot(x[c(1,2)], col=as.factor(penguins$species), main="Classificació real")

Podem observar que flipper_length i body_mass no són bons indicadors per diferenciar a les tres subespècies, atès que dues de les subespècies estan massa barrejades per poder diferenciar res.

# flipper_length y body_mass
plot(x[c(3,4)], col=penguins3clusters$cluster, main="Classificació k-means")

plot(x[c(3,4)], col=as.factor(penguins$species), main="Classificació real")

# bill_length y flipper_length
plot(x[c(1,3)], col=penguins3clusters$cluster, main="Classificació k-means")

plot(x[c(1,3)], col=as.factor(penguins$species), main="Classificació real")

Les dues mesures de bill semblen aconseguir millors resultats al dividir les tres espècies de pingüins. El grup format pels punts negres que ha trobat l’algoritme coincideix amb els de l’espècie Adelie. Els altres dos grups però es barregen més, i hi ha certs punts que es classifiquen com Gentoo (verd) quan en realitat són Chinstrap (vermell).

Una bona tècnica que ajuda a entendre els grups que s’han format, és mirar de donar-los un nom. Com per exemple:

  • Grup 1: Només Adelie (color negre)
  • Grup 2: Principalment Chinstrap (color vermell)
  • Grup 3: Barreja de Gentoo (color verd) i Adelie (color negre)

Això ens ajuda a entendre com estan formats els grups i a referir-nos a ells en anàlisis posteriors.

Tot plegat ens indica que establir el nombre de grups o clústers en un joc de dades no és un aspecte que puguem assegurar que sempre encertarem amb precisió i a més ho farem de forma objectiva, ven al contrari és un àmbit d’estudi que requereix d’anàlisi en si mateix.

Us deixem en el següent enllaç un material didàctic complementari que us pot ajudar a aprofundir en el tema de la selecció del nombre clúster més adequat per a un joc de dades:
datascience.recursos.uoc.edu

Com a continuació de l’estudi podríem seguir experimentant combinant en gràfics similars als anteriors. En definitiva es tractaria en aquest punt d’aprofundir més en el coneixement de les propietats de les diferents característiques o columnes de el joc de dades.


3 Exemple guiat 2

3.1 Mètodes basats en densitat: DBSCAN i OPTICS


En el següent exemple treballarem els algoritmes DBSCAN i OPTICS com a mètodes de clustering que permeten la generació de grups no radials a diferència de k-means. Veurem que el seu paràmetre de entrada més rellevant és minPts que defineix la mínima densitat acceptada al voltant d’un centroide.

Incrementar aquest paràmetre ens permetrà reduir el soroll (observacions no assignades a cap clúster), en qualsevol cas començarem per construir el nostre propi joc de dades en el que dibuixarem 4 zones de punts diferenciades.

if (!require('dbscan')) install.packages('dbscan'); library('dbscan')
set.seed(2)
n <- 400
x <- cbind(
x = runif(4, 0, 1) + rnorm(n, sd=0.1),
y = runif(4, 0, 1) + rnorm(n, sd=0.1)
)
plot(x, col=rep(1:4, time = 100))

Una de las primeres activitats que realitza l’algoritme és ordenar les observacions de forma que els punts més propers es converteixin en veïns en l’ordenament. Es podria pensar com una representació numèrica del dendograma d’una agrupació jeràrquica.

### Executem l'algoritme OPTICS deixant el paràmetre eps amb el seu valor per defecte i fixant el criteri de veïnatge en 10
res <- optics(x, minPts = 10)
res
## OPTICS ordering/clustering for 400 objects.
## Parameters: minPts = 10, eps = 0.193786846197958, eps_cl = NA, xi = NA
## Available fields: order, reachdist, coredist, predecessor, minPts, eps,
##                   eps_cl, xi
### Obtenim la ordenació de les observacions o punts
res$order
##   [1]   1 363 209 349 337 301 357 333 321 285 281 253 241 177 153  57 257  29
##  [19]  77 169 105 293 229 145 181 385 393 377 317 381 185 117 101   9  73 237
##  [37] 397 369 365 273 305 245 249 309 157 345 213 205  97  49  33  41 193 149
##  [55]  17  83 389  25 121 329   5 161 341 217 189 141  85  53 225 313 289 261
##  [73] 221 173  69  61 297 125  81 133 129 197 109 137  59  93 165  89  21  13
##  [91] 277 191 203 379 399 375 351 311 235 231 227  71  11 299 271 291 147  55
## [109]  23 323 219 275  47 263   3 367 331 175  87 339 319 251 247 171 111 223
## [127]  51  63 343 303 207 151 391 359 287 283 215 143 131 115  99  31 183  43
## [145] 243 199  79  27 295  67 347 255 239 195 187 139 107  39 119 179 395 371
## [163] 201 123 159  91 211 355 103 327  95   7 167  35 267 155 387 383 335 315
## [181] 259 135  15 113 279 373   4 353 265 127  45  37  19 276 224 361 260 288
## [199] 336 368 348 292 268 252 120 108  96  88  32  16 340 156 388 372 356 332
## [217] 304 220 188 168 136 124  56 236  28 244 392 184  76 380 232 100 116 112
## [235] 256  72   8 280  64  52 208 172 152 148 360 352 192 160 144 284 216  48
## [253]  84  92  36  20 212 272 264 200 128  80 180 364 196  12 132  40 324 308
## [271] 176 164  68 316 312 384 300 344 328 248 204 140 296  24 320 228  60  44
## [289] 233  65 400 376 240 163 104 396 307  75  14 325 269 262 234 382 294 206
## [307] 198 374 310 362 318 386 358 330 278 210 298 282 122  98  34  26 174 142
## [325]  46   6  62 118 190 202 114 322 286  38 242 394 342 266 162 130  30 182
## [343]   2  74 314 290 246 194 170 126 158 378 350 254 226 214  70  18  10 366
## [361] 354 186 150  86 306 102 338 346 134 250 138  94  78 390 274  58  42 258
## [379]  66  90 146 370 222 218 326  82 110 270 334 178 166 398  22  50 238 106
## [397] 154 302 230  54

Un altre pas molt interessant de l’algoritme és la generació d’un diagrama d’accessibilitat o reachability plot, en el que s’aprecia d’una forma visual la distància d’accessibilitat de cada punt.

Les valls representen clústers (com més profund és la vall, més dens és el clúster), mentre que els cims indiquen els punts que estan entre les agrupacions (aquests punts són candidats a ser considerats outliers)

### Gràfic d'accessibilitat
plot(res)

Vegem una altra representació del diagrama d’accessibilitat, on podem observar les traces de les distàncies entre punts propers del mateix clúster i entre clústers diferents.

### Dibuixem les traces que relacionen punts
plot(x, col = "grey")
polygon(x[res$order,])

Un altre exercici interessant a realitzar és extraure una agrupació de la ordenació realitzada per OPTICS similar a lo que DBSCAN hagués generat establint el paràmetre eps en eps_cl = 0.065. En aquest sentit convidem l’estudiant a experimentar amb diferents valors d’aquest paràmetre.

### Extracció d'un clústering DBSCAN tallant l'accessibilitat en el valor eps_cl
res <- extractDBSCAN(res, eps_cl = .065)
res
## OPTICS ordering/clustering for 400 objects.
## Parameters: minPts = 10, eps = 0.193786846197958, eps_cl = 0.065, xi = NA
## The clustering contains 4 cluster(s) and 92 noise points.
## 
##  0  1  2  3  4 
## 92 81 84 72 71 
## 
## Available fields: order, reachdist, coredist, predecessor, minPts, eps,
##                   eps_cl, xi, cluster
plot(res) ## negre indica soroll

Observem en el gràfic anterior com s’han pintat de color els 4 clústers i en negre es mantenen els valors outliers o extrems.

Seguim endavant amb una representació gràfica que ens mostra els clústers mitjançant formes convexes.

hullplot(x, res)

Repetim l’experiment anterior incrementant el paràmetre epc_c, vegem com l’efecte que produeix és la concentració de clústers ja que flexibilitzem la condició de densitat

### Incrementem el paràmetre eps
res <- extractDBSCAN(res, eps_cl = .1)
res
## OPTICS ordering/clustering for 400 objects.
## Parameters: minPts = 10, eps = 0.193786846197958, eps_cl = 0.1, xi = NA
## The clustering contains 2 cluster(s) and 9 noise points.
## 
##   0   1   2 
##   9 295  96 
## 
## Available fields: order, reachdist, coredist, predecessor, minPts, eps,
##                   eps_cl, xi, cluster
plot(res)

hullplot(x, res)

Vegem ara una variant de la extracció DBSCN anterior. En ella el paràmetre xi ens servirà per a classificar els clústers en funció del canvi en la densitat relativa dels mateixos.

### Extracció del clustering jeràrquic en funció de la variació de la densitat pel mètode xi
res <- extractXi(res, xi = 0.05)
res
## OPTICS ordering/clustering for 400 objects.
## Parameters: minPts = 10, eps = 0.193786846197958, eps_cl = NA, xi = 0.05
## The clustering contains 7 cluster(s) and 1 noise points.
## 
## Available fields: order, reachdist, coredist, predecessor, minPts, eps,
##                   eps_cl, xi, cluster, clusters_xi
plot(res)

hullplot(x, res)

4 Exercicis

Els exercicis es realitzaran sobre la base del joc de dades Hawks present en el paquet R Stat2Data.

Els estudiants i el professorat del Cornell College a Mount Vernon, Iowa, van recollir dades durant molts anys al mirador de falcons de l’estany MacBride, prop d’Iowa City, a l’estat d’Iowa. El joc de dades que analitzem aquí és un subconjunt del conjunt de dades original, utilitzant només aquelles espècies per a les que hi havia més de 10 observacions. Les dades es van recollir en mostres aleatòries de tres espècies diferents de falcons: Cua-roja, Esparver i Falcó de Cooper.

Hem seleccionat aquest joc de dades per la seva semblança amb el joc de dades penguins i pel seu potencial alhora d’aplicar-li algoritmes de mineria de dades no supervisats. Les variables numèriques en què us basareu són: Wing, Weight, culmen, Hallux

if (!require('Stat2Data')) install.packages('Stat2Data'); library('Stat2Data')
data("Hawks")
summary(Hawks)
##      Month             Day             Year       CaptureTime   ReleaseTime 
##  Min.   : 8.000   Min.   : 1.00   Min.   :1992   11:35  : 14          :842  
##  1st Qu.: 9.000   1st Qu.: 9.00   1st Qu.:1995   13:30  : 14   11:00  :  2  
##  Median :10.000   Median :16.00   Median :1999   11:45  : 13   11:35  :  2  
##  Mean   : 9.843   Mean   :15.74   Mean   :1998   12:10  : 13   12:05  :  2  
##  3rd Qu.:10.000   3rd Qu.:23.00   3rd Qu.:2001   14:00  : 13   12:50  :  2  
##  Max.   :11.000   Max.   :31.00   Max.   :2003   13:05  : 12   13:32  :  2  
##                                                  (Other):829   (Other): 56  
##       BandNumber  Species  Age     Sex          Wing           Weight      
##            :  2   CH: 70   A:224    :576   Min.   : 37.2   Min.   :  56.0  
##  1142-09240:  1   RT:577   I:684   F:174   1st Qu.:202.0   1st Qu.: 185.0  
##  1142-09241:  1   SS:261           M:158   Median :370.0   Median : 970.0  
##  1142-09242:  1                            Mean   :315.6   Mean   : 772.1  
##  1142-18229:  1                            3rd Qu.:390.0   3rd Qu.:1120.0  
##  1142-19209:  1                            Max.   :480.0   Max.   :2030.0  
##  (Other)   :901                            NA's   :1       NA's   :10      
##      Culmen         Hallux            Tail        StandardTail  
##  Min.   : 8.6   Min.   :  9.50   Min.   :119.0   Min.   :115.0  
##  1st Qu.:12.8   1st Qu.: 15.10   1st Qu.:160.0   1st Qu.:162.0  
##  Median :25.5   Median : 29.40   Median :214.0   Median :215.0  
##  Mean   :21.8   Mean   : 26.41   Mean   :198.8   Mean   :199.2  
##  3rd Qu.:27.3   3rd Qu.: 31.40   3rd Qu.:225.0   3rd Qu.:226.0  
##  Max.   :39.2   Max.   :341.40   Max.   :288.0   Max.   :335.0  
##  NA's   :7      NA's   :6                        NA's   :337    
##      Tarsus        WingPitFat        KeelFat           Crop       
##  Min.   :24.70   Min.   :0.0000   Min.   :0.000   Min.   :0.0000  
##  1st Qu.:55.60   1st Qu.:0.0000   1st Qu.:2.000   1st Qu.:0.0000  
##  Median :79.30   Median :1.0000   Median :2.000   Median :0.0000  
##  Mean   :71.95   Mean   :0.7922   Mean   :2.184   Mean   :0.2345  
##  3rd Qu.:87.00   3rd Qu.:1.0000   3rd Qu.:3.000   3rd Qu.:0.2500  
##  Max.   :94.00   Max.   :3.0000   Max.   :4.000   Max.   :5.0000  
##  NA's   :833     NA's   :831      NA's   :341     NA's   :343
class(Hawks)
## [1] "data.frame"

4.1 Exercici 1

Presenta el joc de dades, nom i significat de cada columna, així com les distribucions dels seus valors.

Realitza un estudi aplicant el mètode K-means, similar al dels exemples 1.1 i 1.2

4.1.1 Resposta 1

str(Hawks)
## 'data.frame':    908 obs. of  19 variables:
##  $ Month       : int  9 9 9 9 9 9 9 9 9 9 ...
##  $ Day         : int  19 22 23 23 27 28 28 29 29 30 ...
##  $ Year        : int  1992 1992 1992 1992 1992 1992 1992 1992 1992 1992 ...
##  $ CaptureTime : Factor w/ 308 levels " ","1:15","1:31",..: 181 25 138 42 62 71 181 88 261 192 ...
##  $ ReleaseTime : Factor w/ 60 levels ""," ","10:20",..: 1 2 2 2 2 2 2 2 2 2 ...
##  $ BandNumber  : Factor w/ 907 levels " ","1142-09240",..: 856 857 858 809 437 280 859 860 861 281 ...
##  $ Species     : Factor w/ 3 levels "CH","RT","SS": 2 2 2 1 3 2 2 2 2 2 ...
##  $ Age         : Factor w/ 2 levels "A","I": 2 2 2 2 2 2 2 1 1 2 ...
##  $ Sex         : Factor w/ 3 levels "","F","M": 1 1 1 2 2 1 1 1 1 1 ...
##  $ Wing        : num  385 376 381 265 205 412 370 375 412 405 ...
##  $ Weight      : int  920 930 990 470 170 1090 960 855 1210 1120 ...
##  $ Culmen      : num  25.7 NA 26.7 18.7 12.5 28.5 25.3 27.2 29.3 26 ...
##  $ Hallux      : num  30.1 NA 31.3 23.5 14.3 32.2 30.1 30 31.3 30.2 ...
##  $ Tail        : int  219 221 235 220 157 230 212 243 210 238 ...
##  $ StandardTail: int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Tarsus      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ WingPitFat  : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ KeelFat     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Crop        : num  NA NA NA NA NA NA NA NA NA NA ...
sapply(Hawks, function(x) c(Tipo = class(x), Valores = toString(unique(x))))
##         Month         
## Tipo    "integer"     
## Valores "9, 10, 11, 8"
##         Day                                                                                                                
## Tipo    "integer"                                                                                                          
## Valores "19, 22, 23, 27, 28, 29, 30, 5, 8, 9, 10, 11, 12, 13, 14, 17, 24, 25, 3, 16, 21, 20, 1, 4, 7, 26, 31, 18, 6, 15, 2"
##         Year                                                                    
## Tipo    "integer"                                                               
## Valores "1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003"
##         CaptureTime                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
## Tipo    "factor"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
## Valores "13:30, 10:30, 12:45, 10:50, 11:15, 11:25, 11:45, 15:35, 13:45, 12:30, 11:05, 11:00, 12:40, 14:20, 13:40, 14:50, 13:15, 12:10, 13:05, 16:05, 14:35, 12:05, 10:05, 10:45, 15:15, 10:15, 14:00, 10:08, 14:25, 15:25, 15:11, 13:50, 15:55, 12:15, 13:00, 13:20, 15:03, 11:50, 9:53, 10:25, 15:30, 13:25, 10:20, 13:35, 14:40, 9:38, 13:27, 11:35, 9:23, 14:05, 9:20, 16:35, 14:12, 10:37, 9:55, 10:40, 12:27, 9:02, 10:47, 11:24, 11:58, 10:23, 11:20, 12:58, 9:05, 9:33, 11:04, 13:55, 14:45, 11:48, 10:28, 10:54, 14:02, 8:00, 11:55, 15:40, 9:25, 11:10, 11:38, 13:02, 13:16, 10:39, 11:13, 13:07, 13:37, 15:17, 16:00, 11:23, 11:02, 12:01, 12:23, 13:10, 15:07, 8:52, 12:36, 11:30, 10:00, 12:35, 9:08, 10:46, 11:27, 12:55, 12:00, 10:12, 11:06, 11:36, 13:09, 15:00, 14:19, 9.12, 10:29, 11:39, 14:55, 9:15, 10:55, 12:24, 11:21, 11:41, 12:26, 12:20, 14:52, 11:40, 11:22, 12:47, 9:46, 15:02, 11:59, 14:42, 15:01, 15:23, 12:19, 13:33, 14:30, 9:40, 9:50, 14:58, 15:10, 10:10, 13:03, 12:50, 12:04, 12:54, 11:08, 12:02, 14:10, 9:47, 11:07, 10:58, 10:35, 11:18, 16:16, 13:06, 13:04, 11:16, 14:33, 10:56, 11:42, 11:43, 12:13, 10:19, 10:59, 13:36, 14:26, 12:25, 12:32, 12:57, 11:52, 13:17, 14:08, 9:57, 14:27, 14:21, 14:15, 12:34, 12:49, 12:16, 13:47, 14:36, 12:21, 14:22, 12:52, 11:26, 10:42, 9:45, 14:01, 10:17, 14:53, 1:31, 12:08, 15:08, 15:45, 12:12, 11:11, 14:24, 13:08, 12:31, 13:21, 10:43, 13:39, 13:11, 9:01, 9:52, 13:49, 11:29, 14:39, 15:33, 11:28, 13:56, 10:27, 10:48, 11:54, 1:15, 9:58, 9:29, 9:35, 11:34, 13:32, 13:34, 12:06, 13:18, 13:23, 11:47, 10:52, 11:56, 12:59, 15:12, 13:29, 14:38, 13:57, 12:07, 13:12, 12:14, 14:28, 13:38, 9:48, 11:46, 12:38, 9:22, 12:51, 9:21, 10:53, 12:53, 10:49, 14:49, 9:42, 13:24, 10:31, 11:57, 12:03, 11:51, 9:39, 11:03, 10:11, 14:57, 12:33, 14:29, 9:36, 10:36, 13:48, 14:03, 9:24, 12:42, 11:53, 12:48, 11:37, 9:41, 13:58, 14:23, 9:44, 10:04, 12:44, 12:39, 10:13, 13:14, 9:30, 13:26, 12:46, 8:34, 9:59, 10:34, 14:56, 11:33, 10:14, 14:16, 13:22, 12:56, 10:18, 14:06, 12:28, 10:38, 10:57, 10:44, 13:13, 9:49, 9:18, 13:51, 14:47, 10:07, 14:43, 11:17, 14:48,  , 10:06, 13:01, 13:31, 14:07, 14:44, 9:56"
##         ReleaseTime                                                                                                                                                                                                                                                                                                                                                                                                                
## Tipo    "factor"                                                                                                                                                                                                                                                                                                                                                                                                                   
## Valores ",  , 13:26, 10:53, 14:50, 10:32, 10:20, 11:00, 12:50, 13:10, 13:45, 14:07, 11:28, 14:45, 13:36, 10:42, 11:22, 11:50, 12:07, 11:55, 12:09, 12:24, 10:50, 13:52, 14:40, 12:27, 12:41, 12:59, 13:14, 12:05, 13:32, 12:21, 14:37, 10:25, 12:13, 11:07, 13:57, 15:15, 12:00, 12:08, 12:30, 14:30, 13:25, 15:00, 11:35, 13:05, 13:20, 12:33, 14:10, 12:36, 15:03, 11:47, 12:14, 12:34, 14:34, 12:01, 11:41, 11:46, 12:49, 13:08"
##         BandNumber                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
## Tipo    "factor"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
## Valores "877-76317, 877-76318, 877-76319, 745-49508, 1253-98801, 1207-55910 , 877-76320, 877-76321, 877-76322, 1207-55911, 877-76323, 877-76324, 877-76325, 1207-55917, 1207-55912, 1207-55913, 877-76326, 877-76327, 877-76328, 877-76329, 877-76330, 877-76331, 877-76332, 877-76333, 877-76334, 1173-19901, 877-76335, 1207-55914, 1253-98802, 608-48703, 1207-55915, 877-76336, 1207-55916, 1207-55918, 1207-55919, 987-53707, 1207-55920, 877-76337, 1207-55921, 173-19904, 193-19905, 120407-804, 877-76339, 877-76340, 877-76341, 877-76342, 877-76344, 877-76345, 877-76346, 877-76347, 877-76348, 877-76349, 1253-98803, 877-76350, 787-53708, 745-49512, 745-49513, 1207-55922, 1207-55923, 1207-55924, 877-76351, 877-76552, 1207-55927, 877-76353, 1173-19906, 877-76354, 745-49515, 1173-19907, 1373-35272, 877-76355, 877-76357, 877-76358, 1207-55941, 877-76359, 877-76360, 1207-55947, 877-76361, 877-76362, 1387-99101, 1387-99102, 1387-99104, 1387-99103, 1423-16201, 2003-58433, 872-09611, 1204-45804, 1387-97105, 1387-79106, 1207-64601, 1387-79107, 1387-79108, 1387-79109, 1387-79111, 1207-64602, 1207-64603, 1207-64604, 1207-64605, 2003-58435, 2003-58436, 1423-16203, 1423-16204, 1387-79112, 2003-58437, 2003-58438, 1387-79113, 1387-79114, 872-09612, 2206-35417, 1207-64606, 1207-64607, 1705-24603, 1423-16205, 1307-79115, 1387-79116, 1387-79117, 1387-79118, 1387-79119, 1387-79120, 1387-79121, 1207-64608, 872-09613, 872-09614, 1387-79122, 1207-64609, 872-09615, 1207-64610, 1207-64611, 872-09616, 2003-58439, 872-09617, 1387-79123, 1387-79124, 1207-64612, 1387-79125, 1387-79126, 1387-79127, 1387-79128, 1387-79129, 1387-79130, 1207-64613, 872-09618, 872-09619, 2003-58440, 1423-16206, 1207-64614, 1387-79131, 1387-79132, 1207-64615, 1287-79133, 1387-79134, 1387-79135, 872-09620, 1387-79136, 1387-79137, 1387-79138, 1387-79139, 1387-79140, 1387-79141, 1387-79142, 2003-58441, 1423-16207, 1387-79143, 1387-79144, 1207-64616, 1387079145, 1387-79146, 1423-16208, 2003-58442, 1387-079147, 1423-11209, 1423-16210, 2003-58443, 1387-79148, 1207-64617, 1207-64618, 2003-58444, 1387-79149, 1387-79150, 1387-79151, 1387-79152, 1387-79199, 1387-79153, 1387-79154, 1387-79155, 1387-79156, 1387-79157, 1387-79158, 1204-45805, 1207-64619, 1387-79159, 1207-64620, 1207-64621, 1387-79160, 1387-79161, 1423-16211, 872-09621, 1807-53101, 1423-16212, 1387-79162, 1387-79163, 1423-16213, 1423-16214, 1387-79164, 1807-53103, 1387-79165, 1387-79166, 1387-79167, 1387-170, 1387-79171, 1207-64623, 2003-59463, 972-09622, 2003-58464, 2003-58465, 2003-58466, 1343-78401, 1387-79173, 1343-78402, 1343-78403, 1207-64624, 1204-45806, 1387-79174, 1387-79175, 1387-79176, 1387-79177, 1207-64625, 2003-58467, 2003-58468, 1387-79178, 1807-53104, 1423-16221, 1207-64626, 1387-79179, 1705-24606, 1387-79180, 1387-79181, 1387-79182, 1387-79183, 1705-24607, 1207-64627, 1207-64628, 1207-79184, 1207-64629, 1387-79185, 1387-79186, 1207-64660, 1387-79187, 1207-64630, 1705-24608, 1387-79188, 1387-79189, 1387-79190, 1204-45807, 1387-79191, 1387-79192, 1207-64631, 1207-64632, 1387-79193, 1387-79794, 1387-79195, 1207-64634, 1387-79196,  , 1387-79197, 1397-79198, 1387-79172, 1807-53105, 1423-16223, 1207-64635, 877-76379, 2107-64631, 1807-53107, 1387-79200, 877-76380, 1207-64637, 2003-58469, 1343-78405, 8777-63481, 1207-64638, 1207-64639, 8777-6382, 1807-53108, 1207-64640, 1204-45808, 1207-64641, 1207-64642, 1705-24609, 1705-24610, 1207-64643, 1387-92101, 1387-92102, 1387-92103, 1207-64644, 1387-92104, 1387-92105, 1387-92106, 1207-64645, 1705-24611, 1387-92125, 2003-58576, 1423-16276, 1387-92127, 1423-16277, 2003-58577, 2003-58578, 872-09631, 872-09633, 1387-92128, 1705-24626, 872-09634, 1423-16228, 1423-16229, 972-04635, 972-09636, 1426-16230, 1387-92129, 1202-72601, 1705-24627, 1423-16231, 872-09638, 1705-24628, 1387-92130, 1387-92131, 1387-92132, 1204-45809, 1423-16233, 1705-24629, 1423-16232, 872-09639, 1387-92133, 1207-72602, 1387-92134, 1387-92135, 1387-92136, 1387-92137, 1387-92138, 1387-92139, 1387-92140, 1423-16234, 1423-16235, 1387-92141, 1387-92142, 1387-92143, 1387-92144, 1387-92145, 1387-92146, 1387-92147, 1387-92148, 1387-92149, 1397-92150, 1423-16236, 1705-24630, 1387-92151, 1387-92152, 1387-92153, 1423-16238, 12044-5876, 1387-92154, 1423-16239, 1387-92155, 1387-92157, 1423-16278, 1387-92156, 1387-92158, 1207-72603, 1807-53127, 872-09640, 1807-53128, 1423-16240, 12044-5877, 1387-92159, 1807-53129, 1343-78476, 1423-16241, 1387-92160, 1387-92161, 1387-92162, 872-09641, 1387-92166, 1207-72604, 1207-72606, 2003-58581, 1207-72607, 1387-92173, 1142-19209, 1387-92174, 1387-92175, 1207-72608, 1387-92196, 1387-92177, 1207-72609, 1204-45878, 1423-16242, 1343-78477, 1207-72610, 1387-92178, 1387-92180, 1387-92181, 1705-24634, 1207-72611, 1207-72612, 9387-92182, 1343-78478, 1387-92183, 1207-72613, 1807-53130, 1387-92184, 1207-726114, 1207-72615, 1387-92185, 1387-92186, 1343-78479, 1387-92187, 1205-24636, 1423-16243, 872-09646, 1387-92188, 1142-19210, 2003-99306, 1207-72616, 1142-19211, 1387-92189, 1204-45867, 1213-58901, 1387-92190, 1387-92191, 1207-72617, 1142-19212, 1387-92192, 2003-99307, 1142-19213, 1387-92193, 1387-92194, 1387-92195, 1207-72618, 1387-19197, 1387-19298, 2003-99308, 1387-19299, 1387-19220, 22-06-35428, 1204-45868, 1177-04601, 1705-24637, 1207-72619, 2003-99309, 2003-99310, 1142-19214, 1177-04699, 1142-19215, 1177-04602, 1177-04603, 2003-99311, 1177-04604, 1207-72620, 1177-04605, 2003-99312, 1705-24639, 1177-14606, 803-05929, 1177-04607, 1177-04608, 2003-99313, 1177-04609, 1807-53131, 1177-04610, 1177-04611, 1177-04612, 1177-04613, 1177-04614, 1807-53132, 1177-06415, 1207-72621, 2003-99314, 1207-72622, 803-05930, 1177-04616, 1207-72623, 1207-72624, 1177-04617, 1207-72625, 1177-04618, 1207-72626, 1207-72627, 2003-99315, 1177-04619, 2003-99316, 1177-04620, 1177-14621, 1177-04622, 1207-72628, 1142-19227, 1807-53133, 1142-19228, 1177-04623, 1177-04624, 1207-72629, 1177-04625, 2003-94317, 1207-22630, 1207-72631, 1142-18229, 1177-04626, 1177-04627, 1177-04628, 1177-04629, 1177-04630, 1213-58902, 1177-04631, 1705-37411, 1207-72632, 2003-99318, 1207-77633, 1177-04632, 803-05931, 1207-72634, 803-05932, 803-05933, 1142-19230, 1705-37412, 1207-72635, 803-05934, 1204-45869, 1207-72636, 1177-04633, 1142-19231, 1177-04634, 1177-04635, 2206-35431, 1177-04636, 1177-04637, 1204-45870, 1207-72637, 1142-19232, 1207-72638, 1177-04638, 1177-04639, 1207-74639, 1177-04640, 1207-74640, 1705-37413, 1207-72641, 1177-04641, 1142-19233, 803-05935, 1177-04642, 1207-72642, 1207-72643, 1177-04643, 1207-72644, 1207-72645, 1177-04644, 1207-72646, 1177-04645, 1177-04646, 803-05936, 1807-82702, 1177-04647, 1177-04648, 1177-04649, 1142-19234, 1142-19235, 1207-72647, 1142-19236, 1207-72648, 1207-72649, 2003-99320, 2003-99321, 1142-19237, 1177-04650, 1807-82703, 1177-04651, 1142-19238, 1142-19239, 1177-04652, 2206-35432, 1177-04653, 1177-04654, 1142-09240, 1177-04655, 1177-04656, 1142-09241, 1177-04657, 1807-82704, 1207-72650, 1142-09242, 1705-24640, 1177-04658, 1177-04659, 1177-04660, 1177-04661, 1177-04662, 1177-04663, 803-05937, 1177-04664, 1207-72651, 1177-04665, 1204-45871, 1177-04666, 1177-04667, 1177-04668, 1177-04669, 1142-19243, 1177-04670, 1177-04671, 1177-04672, 1177-04673, 1207-72652, 1207-72653, 2003-99233, 1807-82705, 1177-04674, 1177-04675, 1177-04676, 1177-04677, 1177-04698, 1142-19244, 2003-99323, 1177-04678, 803-05938, 1207-72654, 2003-99324, 2003-99325, 2003-99326, 1213-58903, 1213-58904, 1213-58905, 1177-04679, 2003-99327, 1207-72655, 1207-72656, 1142-19245, 1705-24641, 2003-99328, 1213-58906, 1213-58907, 1142-19246, 804-00201, 1705-24642, 1207-72657, 804-00202, 804-00203, 2003-99329, 1177-04680, 1142-19247, 1207-72658, 1177-04681, 1177-04682, 1177-04683, 1177-04684, 1177-04685, 2003-99330, 1142-19248, 1142-19249, 1142-19250, 1142-19251, 1177-04686, 1142-19252, 2003-99331, 1142-19253, 2003-99332, 1142-19254, 1207-72659, 1207-72660 , 1177-04689, 1177-04688, 1142-19255, 1207-72661, 1142-19256, 1177-04690, 1177-04691, 1705-24643, 1807-66307, 2003-99333, 1807-66308, 2003-99334, 1177-04692, 1807-66309, 1750-24644, 1177-04694, 1177-04695, 1207-72662, 2003-99335, 2003-99336, 1705-24645, 2003-99337, 2003-99338, 2003-99339, 1142-19257, 1177-04696, 1177-04697, 803-05939, 1177-04700, 1807-53134, 1177-04701, 2003-99340, 1142-19258, 1177-04702, 1207-72663, 1177-04703, 1705-24648, 1177-04704, 1177-04705, 1177-04706, 1207-72664, 1177-04707, 1705-14646, 1807-53135, 1142-19259, 1705-24647, 1142-19260, 1142-19261, 1207-72665, 1177-04708, 1177-04709, 1177-04710, 1207-72666, 1177-04711, 1705-24649, 1807-53136, 2003-99341, 1177-04712, 1142-19262, 2003-99342, 1177-04713, 2003-99345, 1207-72667, 1142-19263, 2003-00344, 1207-72668, 1207-72669, 1177-04714, 803-05940, 2003-99346, 1142-19264, 1142-19265, 2003-99348, 1142-19266, 1177-04715, 1705-37416, 804-00205, 1177-04716, 1807-53137, 1177-04717, 2003-99349, 803-05941, 1142-19267, 1213-58908, 1207-72670, 2003-99350, 1177-04718, 1142-19268, 2206-35435, 1142-19269, 1142-19270, 804-00206, 1177-04719, 1177-04720, 1177-04721, 1142-19271, 1177-04722, 803-05942, 1177-04723, 1177-04724, 1177-04725, 1207-7267, 1207-72672, 1177-04726, 1177-04727, 1177-04728, 1204-5874, 1807-53138, 1177-04729, 1177-04730, 2003-99351, 1177-04731, 1177-04732, 2003-99352, 1177-04733, 2003-99353, 1177-04734, 2003-99354, 1177-04735, 1177-04736, 1177-04737, 1177-04738, 1705-24644, 1177-04739, 1177-04740, 1142-19272, 1177-04741, 1207-72673, 2003-99355, 1177-0472, 1177-0473, 1207-72674, 1177-0744, 2003-99356, 1177-0745, 2003-99357, 803-05943, 2003-99358, 1207-72675, 1142-19273, 1142-19274, 2003-99359, 1204-45879, 1705-37417, 1142-19275, 1207-99560, 1177-04746, 1142-19276, 2003-99360, 1142-19277, 1207-72676, 1207-72677, 1142-19278, 1705-37418, 2003-99362, 1204-45880, 2003-99363, 1177-04747, 1177-04748, 2003-99364, 1204-45881, 1177-04749, 2003-99365, 1142-19279, 1705-37419, 1142-19280, 1177-04750, 1207-72678, 1142-19281, 2003-99366, 2003-99367, 1142-19282, 1207-72679, 1705-37420, 2003-99368, 2003-99369, 1204-45882, 1177-04751, 1177-04752, 1207-72680, 1177-04753, 1207-72681, 1177-04754, 1142-19283, 1204-45883, 1204-45884, 1142-19284, 1807-53139, 1177-04755, 1177-04756, 1207-72682, 2003-99370, 1807-53140, 1142-19285, 1207-72683, 1177-04757, 1177-04758, 1177-04759, 2003-99371, 1142-19286, 1207-72684, 1807-53141, 1177-04760, 1207-72685, 1142-19287, 1177-04761, 788-36611, 1142-19288, 1142-19289, 1207-72686, 1177-04762, 1204-45885, 1177-04763, 1177-04764, 1207-72687, 1177-04765, 1807-53142, 1177-04766, 2003-99372, 1177-04767, 1177-04768, 1213-58909, 1177-04769, 1204-45886, 2003-99373, 1177-04770, 1177-04771, 1177-04772, 1801-53143, 803-05944, 2003-99374, 2003-99375, 1177-04773, 1213-58910, 1177-04774, 1177-04775, 1177-04776, 1207-53144, 1177-04777, 803-05985, 1807-53145, 1177-04778, 1207-53145"
##         Species      Age      Sex     
## Tipo    "factor"     "factor" "factor"
## Valores "RT, CH, SS" "I, A"   ", F, M"
##         Wing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
## Tipo    "numeric"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
## Valores "385, 376, 381, 265, 205, 412, 370, 375, 405, 393, 371, 390, 416, 436, 418, 378, 396, 399, 415, 392, 380, 173, 401, 427, 395, 362, 391, 413, 193, 171, 233, 384, 382, 398, 400, 422, 202, 394, 369, 252, 240, 410, 241, 408, 37.2, 326, 158, 271, 176, 194, 387, 420, 435, 372, 204, 170, 406, 208, 175, 166, 198, 200, 169, 260, 428, 177, 403, 414, 209, 388, 277, 423, 365, 383, 389, 179, 172, 174, 363, 450, 373, 409, 197, 445, 397, 379, 386, 417, 239, 377, 432, 213, 402, 201, 374, 358, 360, 355, 203, 195, 236, 350, 411, 178, 223, 345, 273, 330, 313, 259, 215, 404, NA, 425, 111, 225, 247, 354, 368, 191, 161, 156, 160, 164, 352, 163, 190, 165, 162, 230, 157, 364, 367, 336, 199, 349, 343, 268, 168, 478, 469, 351, 235, 407, 243, 210, 480, 196, 361, 255, 237, 192, 167, 254, 184, 357, 331, 188, 145, 272, 250, 356, 155, 266, 261, 262, 207, 320, 227, 419, 258, 253, 359, 159, 234, 366, 185, 216, 256, 183, 218, 181, 220, 143, 347"
##         Weight                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
## Tipo    "integer"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## Valores "920, 930, 990, 470, 170, 1090, 960, 855, 1210, 1120, 1010, NA, 1170, 1390, 1150, 950, 910, 1070, 1190, 101, 1330, 100, 1100, 180, 1490, 1040, 820, 1030, 1300, 1500, 1080, 1320, 88, 324, 1060, 1140, 1000, 1050, 1110, 980, 134, 1270, 880, 340, 1255, 1180, 760, 1250, 475, 1130, 1160, 1345, 1385, 1455, 1025, 1360, 194, 159, 90, 1065, 1125, 1340, 1275, 168, 146, 108, 94, 1085, 188, 154, 810, 905, 420, 1240, 365, 91, 860, 970, 985, 89, 97, 93, 1350, 1370, 103, 151, 940, 1310, 1035, 965, 975, 95, 195, 1205, 1045, 955, 900, 1075, 211, 995, 1095, 196, 176, 164, 158, 1465, 169, 1105, 1015, 183, 1405, 1055, 1670, 190, 105, 206, 1195, 890, 160, 99, 165, 125, 155, 1285, 390, 150, 130, 550, 999, 530, 1260, 1280, 1220, 1135, 480, 925, 730, 1020, 350, 375, 1175, 1540, 1420, 400, 1142, 157, 98, 813, 181, 92, 1024, 464, 186, 1023, 163, 1119, 917, 946, 337, 742, 439, 187, 1094, 832, 1244, 974, 1289, 994, 1004, 1097, 185, 1092, 1049, 998, 1091, 987, 1151, 971, 1159, 1239, 1216, 177, 469, 1039, 1079, 162, 339, 1403, 175, 1473, 1001, 914, 1059, 1147, 949, 102, 973, 327, 1064, 749, 201, 1213, 1200, 113, 919, 1487, 1254, 156, 1189, 979, 96, 1339, 1199, 1344, 969, 1054, 334, 1449, 1598, 992, 569, 1354, 1439, 1019, 1399, 1169, 1164, 429, 1215, 1165, 1044, 895, 540, 590, 1225, 110, 850, 1145, 200, 505, 800, 1460, 1585, 1315, 1005, 280, 775, 107, 909, 1560, 145, 1089, 1194, 945, 785, 56, 320, 1185, 85, 565, 325, 1400, 1430, 915, 535, 120, 1290, 1335, 1115, 115, 229, 235, 1435, 1235, 490, 845, 865, 2030, 515, 1265, 191, 205, 1595, 240, 875, 330, 455, 1305, 795, 1155, 380, 640, 935, 525, 305, 510, 440, 295, 300, 335, 210, 830, 360, 840, 1325, 805, 1525, 790"
##         Culmen                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## Tipo    "numeric"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
## Valores "25.7, NA, 26.7, 18.7, 12.5, 28.5, 25.3, 27.2, 29.3, 26, 26.3, 25.4, 28.9, 28.2, 26.5, 30.5, 27.1, 24, 26.4, 28.8, 24.9, 27, 26.2, 28.6, 11.7, 30.1, 25.5, 27.3, 29.1, 9.3, 9.7, 16, 26.1, 25.1, 27.6, 28.7, 27.9, 12.4, 27.8, 25, 16.1, 29.7, 30, 20.2, 24.5, 26.6, 25.2, 10.8, 18.2, 9.8, 11.4, 30.2, 26.8, 29.5, 32.6, 28, 27.7, 12.6, 9.5, 17.8, 25.9, 19.6, 27.5, 28.1, 29, 12.7, 11.8, 10, 12.2, 9, 26.9, 16.8, 10.2, 25.8, 23.9, 25.6, 8.6, 10.1, 10.3, 27.4, 9.4, 30.3, 24.7, 19.1, 29.4, 12.1, 11.5, 21.1, 12.3, 17.3, 28.4, 24.2, 24.3, 22.2, 9.6, 12, 11.9, 15.1, 24.4, 10.9, 18.8, 19.2, 33.3, 16.6, 14.1, 23.8, 17.7, 9.9, 28.3, 24.6, 26.85, 24.8, 16.9, 29.2, 29.9, 15, 16.5, 10.4, 12.8, 19.5, 15.7, 23.4, 13.1, 31.8, 34.1, 32.9, 20, 33.8, 23.5, 34.9, 12.9, 39.2, 8.7, 10.6, 10.7, 17.5, 34.2, 19, 24.1, 13.7, 13.2, 30.6, 12.25, 23.6, 11, 19.3, 13, 16.4, 20.7, 15.8, 18.9, 29.8, 13.5, 16.2, 29.25, 31.2, 17, 17.1, 22, 18, 13.3, 22.7, 9.1, 11.3, 19.7, 29.6, 13.8, 16.7, 10.5, 15.9, 22.1, 11.6, 8.8, 8.9, 18.6, 13.6, 16.3, 15.5, 23.2, 21.9"
##         Hallux                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## Tipo    "numeric"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
## Valores "30.1, NA, 31.3, 23.5, 14.3, 32.2, 30, 30.2, 30.8, 29.7, 30.9, 30.6, 34, 31, 28.9, 28.2, 26.9, 31.2, 31.6, 30.7, 30.3, 32.5, 15, 32.4, 31.4, 27.9, 27.2, 101, 11.5, 19.3, 29.4, 28.3, 29.8, 31.55, 29.3, 13.7, 26.5, 20.8, 36.4, 33.4, 26.65, 26.1, 27.7, 10.5, 32.7, 24.75, 11.1, 14.2, 29.1, 34.3, 28.6, 31.5, 33.2, 31.1, 33.5, 32.6, 14.4, 14.8, 11.3, 19.4, 32, 308, 27.8, 33.7, 341.4, 33.8, 14.9, 29.9, 143, 28.7, 10.2, 23.9, 34.7, 22.5, 31.7, 29, 11, 29.5, 11.2, 33, 13.9, 12.1, 30.4, 34.1, 31.8, 11.6, 10.8, 14.1, 27.5, 28.8, 32.8, 32.1, 34.2, 27.4, 33.9, 14.6, 15.1, 15.2, 29.2, 34.6, 14.5, 30.5, 33.1, 19.2, 82.8, 32.9, 15.5, 13.5, 28.4, 13.2, 12.7, 12.5, 20.4, 21.3, 24.7, 31.9, 23.4, 28, 50.2, 11.9, 25.7, 12.4, 29.6, 26, 18.2, 35.5, 20, 13.8, 11.7, 11.4, 24.1, 14, 14.7, 18.8, 24.2, 24.9, 44.7, 43.2, 10.9, 35, 27.3, 20.3, 26.8, 28.5, 35.4, 24, 25.2, 22.9, 9.6, 32.3, 33.6, 35.2, 19.9, 15.6, 11.8, 10.3, 15.7, 39.8, 35.6, 25.4, 11.85, 29.55, 33.85, 28.35, 34.5, 15.3, 20.5, 18.7, 33.3, 25.3, 12.2, 35.3, 12, 13.4, 15.4, 10.7, 121, 25.1, 20.7, 27, 130, 23.55, 9.5, 21, 20.2, 35.8, 23.8, 22.6, 25, 18.5, 42.8, 27.6, 34.4, 54.5, 21.9, 23.6, 20.6, 19.5, 27.1, 23.3, 10.4, 22.8, 20.1, 19.7, 22.1, 28.1, 15.8"
##         Tail                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
## Tipo    "integer"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
## Valores "219, 221, 235, 220, 157, 230, 212, 243, 210, 238, 222, 217, 213, 232, 202, 227, 237, 211, 130, 190, 245, 164, 246, 207, 209, 200, 215, 198, 204, 205, 144, 136, 191, 208, 231, 225, 233, 214, 158, 192, 229, 122, 133, 154, 250, 236, 239, 228, 155, 152, 135, 186, 216, 248, 223, 160, 137, 127, 150, 129, 224, 234, 241, 126, 240, 140, 218, 151, 131, 226, 134, 244, 159, 260, 182, 125, 197, 153, 145, 165, 168, 156, 185, 255, 276, 132, 251, 267, 138, 242, 178, 196, 162, 249, 149, 184, 247, 257, 148, 193, 201, 139, 170, 146, 288, 199, 161, 143, 128, 195, 169, 124, 206, 147, 180, 187, 179, 123, 203, 163, 142, 119, 141, 181, 183, 188, 253, 121"
##         StandardTail                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
## Tipo    "integer"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
## Valores "NA, 244, 162, 137, 224, 129, 161, 164, 135, 138, 225, 229, 139, 159, 160, 142, 228, 206, 136, 232, 205, 171, 221, 230, 240, 261, 238, 167, 152, 239, 234, 249, 237, 250, 252, 243, 165, 245, 153, 181, 259, 272, 269, 148, 251, 227, 236, 216, 220, 163, 196, 210, 166, 218, 141, 200, 115, 198, 219, 241, 222, 158, 131, 217, 156, 202, 231, 211, 191, 150, 214, 155, 233, 209, 203, 154, 149, 212, 226, 223, 157, 215, 146, 144, 201, 235, 187, 255, 195, 204, 132, 130, 172, 143, 213, 208, 207, 168, 199, 335, 170, 121, 134, 145, 246, 173, 174, 133, 169, 140, 126, 313, 192, 256, 194, 190, 242, 128, 248"
##         Tarsus                                                                                                                                                                                                                                                                                                                                                                                                
## Tipo    "numeric"                                                                                                                                                                                                                                                                                                                                                                                             
## Valores "NA, 89.3, 57, 48.4, 86.6, 48.6, 54.3, 56, 48.3, 50.5, 90.2, 73.3, 44.5, 57.6, 57.5, 50.2, 55, 82.8, 85.5, 67.5, 49.8, 24.7, 85.1, 88.9, 87.4, 67.2, 74.4, 56.5, 47.7, 87.1, 85.4, 85.2, 86.9, 90.1, 84.8, 86.8, 91.3, 58.1, 52.4, 84.9, 81.7, 91.7, 89, 94, 79.3, 91.2, 90.3, 84.4, 54.6, 75.3, 86.2, 91, 52.5, 71.2, 92.5, 55.9, 53.4, 93.7, 91.9, 50, 84.1, 69.2, 60.1, 56.8, 55.3, 87.9, 80.8, 54"
##         WingPitFat       KeelFat                           
## Tipo    "integer"        "numeric"                         
## Valores "NA, 0, 2, 1, 3" "NA, 1, 2, 0, 4, 3, 2.5, 3.5, 1.5"
##         Crop                                                  
## Tipo    "numeric"                                             
## Valores "NA, 0, 0.25, 1, 0.5, 0.75, 3, 4, 5, 0.33, 0.4, 0.125"

Month -> Mes de l’any Day -> Dia Year -> Any Capture Time -> Hora de captura en format HH:MM Realease Time -> Hora d’alliberament en format HH:MM BandNumber -> Id de la banda Species -> Tipo d’especie CH=Cooper’s, RT=Red-tailed, SS=Sharp-Shinned Age -> Edat A=Adult or I=Imature Sex -> Sexe F=Female or M=Male Wing -> Longitud de las alas en mm Weight -> Pes en grams Culmen -> Longitud des del bec fins la cua en mm Hallux -> Mida en mm de les urpes Tail -> Mida de la cua en mm StandardTail -> Mesura estàndard de la longitud de la cua (en mm) Tarsus -> Longitud de l’os bàsic del peu (en mm) WingPitFat -> Quantitat de greix a la fossa de l’ala KeelFat -> Quantitat de greix a l’estèrnum Crop -> Quantitat de material al cultiu, codificat d’1=ple a 0=buit

#les dades ja estan netes, per tant no cal fer cap proces previ de neteja de dades
#les variables més interessants són wing, Weight, Culmen, Hallux, Tail, StandardTail, Tarsus, WingPitFat, Crop, ja que són valors númerics no discretitzats
#StandardTail, Tarsus, WingPitFat, KeelFat, Crop les elimen al contenir molt valors nuls

hawks_1 <- na.omit(Hawks[,10:14])
print(summary(hawks_1))
##       Wing           Weight           Culmen          Hallux      
##  Min.   : 37.2   Min.   :  56.0   Min.   : 8.60   Min.   :  9.50  
##  1st Qu.:202.0   1st Qu.: 185.0   1st Qu.:12.80   1st Qu.: 15.10  
##  Median :370.0   Median : 970.0   Median :25.50   Median : 29.40  
##  Mean   :315.9   Mean   : 771.6   Mean   :21.81   Mean   : 26.41  
##  3rd Qu.:390.0   3rd Qu.:1120.0   3rd Qu.:27.35   3rd Qu.: 31.40  
##  Max.   :480.0   Max.   :2030.0   Max.   :39.20   Max.   :341.40  
##       Tail      
##  Min.   :119.0  
##  1st Qu.:160.0  
##  Median :214.0  
##  Mean   :198.9  
##  3rd Qu.:225.0  
##  Max.   :288.0
#primer de tot analitzarem quin número de cluster amb el mètode de Calinski-Harabasz
library(fpc)
ch_values <- numeric(10)
for (i in 2:10) {
  fit <- kmeans(hawks_1, centers = i)
  ch_values[i] <- calinhara(hawks_1, fit$cluster)
}
print(length(ch_values))
## [1] 10
plot(1:10, ch_values, type = "b", xlab = "Número de clusters (k)", ylab = "Índex de Calinski-Harabasz")

pel que fa al índex de Calinski-Harabasz els valors més òptim són K=2,7,9

wss <- numeric(10)
for (i in 1:10) {
  fit <- kmeans(hawks_1, centers = i)
  wss[i] <- fit$tot.withinss
}
plot(1:10, wss, type = "b", xlab = "Número de clusters (k)", ylab = "Suma total dels quadrats dins dels clusters")

Aquí podem veure que no millora gaire segons el mètode del colze després de k=2

d <- dist(hawks_1)
asw_values <- numeric(10)
for (i in 2:10) {
  fit <- kmeans(hawks_1, centers = i)
  asw_values[i] <- mean(silhouette(fit$cluster, d))
}
plot(1:10, asw_values, type = "b", xlab = "Número de clusters (k)", ylab = "Silueta")

Ara agruparem amb K=2,3,5,6, que són els valors més interessants segons Calinski-Harabasz.

#k=2
kluster <- kmeans(hawks_1,2)

plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-means")

par(mfrow = c(1, 2))#imprimir predicció vs agrupació real

#k=2
kluster <- kmeans(hawks_1,3)

par(mfrow = c(1, 2))#imprimir predicció vs agrupació real


plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-means")
plot(hawks_1[c(1,2)], col=as.factor(Hawks$Species), main="Classificació real")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-means")
plot(hawks_1[c(3,4)], col=as.factor(Hawks$Species), main="Classificació real")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-means")
plot(hawks_1[c(1,3)], col=as.factor(Hawks$Species), main="Classificació real")

En les anteriors gràfiques podem veure que tot i que les agrupacions estàn ben diferenciades entre elles, les diferències amb els valors reals son notories.

#k=2
kluster <- kmeans(hawks_1,5)

plot(hawks_1[c(1,5)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(3,5)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(1,5)], col=kluster$cluster, main="Classificació k-means")

#k=2
kluster <- kmeans(hawks_1,6)

plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-means")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-means")

Aquí podem veure que l’agrupació amb K=6 queda millor agrupada que la de K=5, resultat esperat segons l’estudi dels valors de K. Com es pot observar hi ha moltes mostres que prenen valors extrems i són dificíls, ara repetirem l estudi anterior però amb l’algoritme K-medians, que es similiar al Kmeans però utilitza la mitjana en lloc de la mitja per calcular els centroides.

#k=2
kluster <- pam(hawks_1,2)

plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-med")

#k=3
kluster <- pam(hawks_1,3)

par(mfrow = c(1, 2))#imprimir predicció vs agrupació real


plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-med")
plot(hawks_1[c(1,2)], col=as.factor(Hawks$Species), main="Classificació real")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-med")
plot(hawks_1[c(3,4)], col=as.factor(Hawks$Species), main="Classificació real")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-med")
plot(hawks_1[c(1,3)], col=as.factor(Hawks$Species), main="Classificació real")

#k=2
kluster <- pam(hawks_1,5)

plot(hawks_1[c(1,5)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(3,5)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(1,5)], col=kluster$cluster, main="Classificació k-med")

#k=2
kluster <- pam(hawks_1,6)

plot(hawks_1[c(1,2)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(3,4)], col=kluster$cluster, main="Classificació k-med")

plot(hawks_1[c(1,3)], col=kluster$cluster, main="Classificació k-med")

A simple vista semble que els resultats són millors, anem a comparar els resultats amb el mètode de Calinski-Harabasz.

ch_values <- numeric(10)
ch_values2 <- numeric(10)
for (i in 2:10) {
  fit <- kmeans(hawks_1, centers = i)
  ch_values[i] <- calinhara(hawks_1, fit$cluster)
}
print(length(ch_values))
## [1] 10
for (i in 2:10) {
  fit2 <- pam(hawks_1, i)
  ch_values2[i] <- calinhara(hawks_1, fit2$cluster)
}
print(length(ch_values))
## [1] 10
plot(1:10, ch_values, type = "b", xlab = "Número de clusters (k)", ylab = "Índex de Calinski-Harabasz")
lines(1:10, ch_values2,type = "b", col = "red")

Podem veure que el resultat es similar però en aquest cas funciona millor el mètoda Kmed

Per acabar l’exercici mirarem la distribució real de les agrupacions segons l’espècie

kluster <- kmeans(hawks_1,3)
#plot(hawks_1[c(3,5)], col=kluster$cluster, main="Classificació k-means")
#plot(hawks_1[c(3,5)], col=as.factor(Hawks$Species), main="Classificació real")

for (i in c(1,2,3,4)) {
  for (j in c(1,2,3,4)) {
    if (i!=j){
      plot(hawks_1[c(i,j)], col=as.factor(Hawks$Species), main="Classificació real")
    }
  }
}

Després de mirar l’agrupació real podem veure que les espècies no estàn clarament diferenciades. En aquest cas l’algoritme no funciona bé per fer prediccions de l’espècie.

4.2 Exercici 2

Amb el joc de dades proporcionat realitza un estudi aplicant DBSCAN i OPTICS, similar al de l’exemple 2

4.2.1 Resposta 2

library(dbscan)
optics_result <- optics(hawks_1,eps = 6,minPts = 1.9)
# Visualizar los resultados
plot(optics_result, main = "Reachability Plot")

res <- extractDBSCAN(optics_result, eps_cl = .1)
res
## OPTICS ordering/clustering for 891 objects.
## Parameters: minPts = 1.9, eps = 6, eps_cl = 0.1, xi = NA
## The clustering contains 891 cluster(s) and 0 noise points.
## 
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
##  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
##  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
##  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
##  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
## 881 882 883 884 885 886 887 888 889 890 891 
##   1   1   1   1   1   1   1   1   1   1   1 
## 
## Available fields: order, reachdist, coredist, predecessor, minPts, eps,
##                   eps_cl, xi, cluster
hullplot(hawks_1,res)

Repetim l’algoritme per varios valors de MinPnts

for (i in c(5,6,7,8,9,10,11,13,14,15)) {
  optics_result <- optics(hawks_1, i,10)
  # Visualizar los resultados
  #plot(optics_result, main = "Reachability Plot")
  res <- extractDBSCAN(optics_result, eps_cl = .1)
  hullplot(hawks_1,res)
}

Després d’intentar varios valors de eps i MinPunts, no he aconseguit treure cap valor que fagi un número de clusters coherent.

4.3 Exercici 3

Realitza una comparativa dels mètodes k-means i DBSCAN

4.3.1 Resposta 3

Amb Kmeans els resultats han sigut bastant bons encara que no es corresponia amb les espècies de les dades. En canvi amb OPTICS i DBSCAN no he aconseguit trobar els valors de epsilon i minim de punts per trobar un número de clusters coherent.

Aixo pot ser degut al canvi de densitat en diferents regions de les dades, a que les dades no estiguin en les mateixes unitat o presencia de soroll.

En quan els pros i contres de cada algoritme:

K-means: Pros:

Eficiència: És computacionalment eficient i generalment converge ràpidament. Simplicitat: És fàcil d’implementar i comprendre. Útil per clusters esfèrics: Funciona bé quan els clusters tenen formes esfèriques i dimensions similars. Contres:

Sensible a la inicialització: Els resultats poden variar segons les inicialitzacions dels centroids. Necessita especificar el nombre de clusters: Ha de conèixer-se de manera prèvia el nombre de clusters, la qual cosa pot ser un repte en alguns casos. No adequat per clusters no esfèrics: No funciona bé en clusters de formes irregulars o amb densitats diferents.

OPTICS: Pros:

Detecta clusters de densitat variable: És capaç de detectar clusters amb densitats variables, cosa que és difícil per a K-means. No requereix especificar el nombre de clusters: No necessita conèixer-se de manera prèvia el nombre de clusters, ja que pot descobrir-los de manera automàtica. Robust davant del soroll: Pot ser més robust davant de punts sorollosos que K-means. Contres:

Pot ser computacionalment costós: Pot requerir més temps de càlcul en conjunts de dades grans o de alta dimensionalitat. Sensible als paràmetres: Encara requereix ajustar paràmetres com la distància màxima (xi). Menys intuïtiu que K-means: Pot ser més complex d’interpretar i ajustar.

DBSCAN: Pros:

Detecta clusters de forma arbitrària: És efectiu per a clusters de formes irregulars i no requereix especificar el nombre de clusters. Robust davant del soroll: Pot manejar bé punts sorollosos i outliers. No sensible a l’inicialització: No depèn de la inicialització dels centroids com K-means. Contres:

Sensible als paràmetres: Cal ajustar els paràmetres eps i min_samples adequadament. Problemes amb densitats variables: Pot tenir dificultats en la detecció de clusters amb densitats variables o en diferents escales. No adequat per a clusters de densitat baixa: Pot tenir problemes amb clusters de densitat baixa en algunes situacions. En resum, la tria entre K-means, OPTICS i DBSCAN dependrà de les característiques específiques del teu conjunt de dades i dels objectius del teu anàlisi. Pot ser útil provar diversos algoritmes i ajustar els paràmetres per trobar el més adequat per al teu cas d’ús.